Published on

Lagrange multiplier

Authors

欸,太久不用果然是容易忘记😢,这次问问AI来复习一下拉格朗日乘子法吧。很小的知识点,以后还是要多多注意。


🤔Me: 拉格朗日乘子法 求 f=ax2+by2+cz2 f = ax^2+by^2 + cz^2 在约束 g=x2+y2+z2=1g = x^2 + y^2 + z^2 = 1下的最小值


🥽AI: 这是一个经典的拉格朗日乘子法(Lagrange Multipliers)应用问题。这个问题本质上是在求二次型在单位球面上的极值。

以下是详细的求解步骤:

1. 构造拉格朗日函数

首先,明确目标函数和约束条件:

  • 目标函数: f(x,y,z)=ax2+by2+cz2f(x, y, z) = ax^2 + by^2 + cz^2
  • 约束条件: g(x,y,z)=x2+y2+z21=0g(x, y, z) = x^2 + y^2 + z^2 - 1 = 0

构造拉格朗日函数 LL

L(x,y,z,λ)=ax2+by2+cz2λ(x2+y2+z21)L(x, y, z, \lambda) = ax^2 + by^2 + cz^2 - \lambda (x^2 + y^2 + z^2 - 1)

2. 求偏导数并建立方程组

x,y,z,λx, y, z, \lambda 分别求偏导,并令其为 0:

  1. Lx=2ax2λx=2x(aλ)=0\frac{\partial L}{\partial x} = 2ax - 2\lambda x = 2x(a - \lambda) = 0
  2. Ly=2by2λy=2y(bλ)=0\frac{\partial L}{\partial y} = 2by - 2\lambda y = 2y(b - \lambda) = 0
  3. Lz=2cz2λz=2z(cλ)=0\frac{\partial L}{\partial z} = 2cz - 2\lambda z = 2z(c - \lambda) = 0
  4. Lλ=(x2+y2+z21)=0    x2+y2+z2=1\frac{\partial L}{\partial \lambda} = -(x^2 + y^2 + z^2 - 1) = 0 \implies x^2 + y^2 + z^2 = 1

3. 求解方程组

我们需要分析方程 (1)、(2)、(3) 的解的情况。

方程 (1) x(aλ)=0x(a - \lambda) = 0 意味着:

要么 x=0x = 0,要么 λ=a\lambda = a

同理,对于 yyzz 也有类似的结论。我们需要讨论 λ\lambda 的取值。

情况 A:假设 λ=a\lambda = a

如果 λ=a\lambda = a,代入方程 (2) 和 (3):

  • y(ba)=0y(b - a) = 0
  • z(ca)=0z(c - a) = 0

这里有两个子情况:

  1. a,b,ca, b, c 互不相等: 则必须有 y=0y=0z=0z=0

    代入约束条件 (4):x2+0+0=1    x=±1x^2 + 0 + 0 = 1 \implies x = \pm 1

    此时驻点为 (±1,0,0)(\pm 1, 0, 0)

    函数值为:f=a(±1)2+0+0=af = a(\pm 1)^2 + 0 + 0 = a

  2. a=ba = b (或其他相等情况):yy 可以不为 0,这对应几何上的简并情况(如旋转椭球体),但极值结果本质相同。

情况 B:假设 λ=b\lambda = b

同理,如果 a,b,ca, b, c 互不相等,则 x=0,z=0x=0, z=0

代入约束条件:y=±1y = \pm 1

此时驻点为 (0,±1,0)(0, \pm 1, 0)

函数值为:f=0+b(±1)2+0=bf = 0 + b(\pm 1)^2 + 0 = b

情况 C:假设 λ=c\lambda = c

同理,如果 a,b,ca, b, c 互不相等,则 x=0,y=0x=0, y=0

代入约束条件:z=±1z = \pm 1

此时驻点为 (0,0,±1)(0, 0, \pm 1)

函数值为:f=0+0+c(±1)2=cf = 0 + 0 + c(\pm 1)^2 = c


4. 结论

通过上述讨论,函数 ff 在约束条件下的可能极值点对应的函数值分别为 a,b,ca, b, c

要找到最小值,我们需要比较系数 a,b,ca, b, c 的大小。

  • 最小值a,b,ca, b, c 中的最小者
  • 最大值a,b,ca, b, c 中的最大者

最终答案:

fmin=min{a,b,c}f_{min} = \min\{a, b, c\}

几何解释

这个问题在几何上可以理解为:寻找一个中心在原点的椭球面 ax2+by2+cz2=kax^2 + by^2 + cz^2 = kkk 为常数),使其与单位球面 x2+y2+z2=1x^2 + y^2 + z^2 = 1 相切。

  • kk 逐渐增大或减小时,椭球面会膨胀或收缩。
  • 相切发生的位置恰好在椭球的主轴方向(即坐标轴方向)。
  • 因此,极值恰好对应椭球主轴长度相关的系数 a,b,ca, b, c

您希望我代入具体的数字(例如 a=1, b=2, c=3)来演示计算过程,还是继续讲解如何判断它是极大值还是极小值?


🤔Me: 可以,代入数字解吧


🥽AI: 好的,那我们就设定 a=1,b=2,c=3a=1, b=2, c=3

具体问题:

求函数 f(x,y,z)=x2+2y2+3z2f(x, y, z) = x^2 + 2y^2 + 3z^2 在约束条件 x2+y2+z2=1x^2 + y^2 + z^2 = 1 下的最小值。


1. 构造拉格朗日函数

目标函数:f=x2+2y2+3z2f = x^2 + 2y^2 + 3z^2

约束函数:g=x2+y2+z21=0g = x^2 + y^2 + z^2 - 1 = 0

构造函数 LL

L(x,y,z,λ)=x2+2y2+3z2λ(x2+y2+z21)L(x, y, z, \lambda) = x^2 + 2y^2 + 3z^2 - \lambda (x^2 + y^2 + z^2 - 1)

2. 求偏导并建立方程组

对所有变量求偏导,令其为 0:

  1. Lx=2x2λx=2x(1λ)=0\frac{\partial L}{\partial x} = 2x - 2\lambda x = 2x(1 - \lambda) = 0
  2. Ly=4y2λy=2y(2λ)=0\frac{\partial L}{\partial y} = 4y - 2\lambda y = 2y(2 - \lambda) = 0
  3. Lz=6z2λz=2z(3λ)=0\frac{\partial L}{\partial z} = 6z - 2\lambda z = 2z(3 - \lambda) = 0
  4. Lλ=(x2+y2+z21)=0\frac{\partial L}{\partial \lambda} = -(x^2 + y^2 + z^2 - 1) = 0

3. 分情况求解

我们需要找到满足上述所有方程的 (x,y,z)(x, y, z) 组合。观察前三个方程,每个方程都提供了两种可能:要么变量为 0,要么括号内的项为 0(即 λ\lambda 等于某个系数)。

情况一:由方程 (1) 假设 λ=1\lambda = 1

  • 代入方程 (2):2y(21)=2y=0    y=02y(2 - 1) = 2y = 0 \implies y = 0
  • 代入方程 (3):2z(31)=4z=0    z=02z(3 - 1) = 4z = 0 \implies z = 0
  • 代入约束 (4):x2+0+0=1    x=±1x^2 + 0 + 0 = 1 \implies x = \pm 1

得到驻点:(±1,0,0)(\pm 1, 0, 0)

计算函数值:f=(±1)2+2(0)2+3(0)2=1f = (\pm 1)^2 + 2(0)^2 + 3(0)^2 = \mathbf{1}

情况二:由方程 (2) 假设 λ=2\lambda = 2

  • 代入方程 (1):2x(12)=2x=0    x=02x(1 - 2) = -2x = 0 \implies x = 0
  • 代入方程 (3):2z(32)=2z=0    z=02z(3 - 2) = 2z = 0 \implies z = 0
  • 代入约束 (4):0+y2+0=1    y=±10 + y^2 + 0 = 1 \implies y = \pm 1

得到驻点:(0,±1,0)(0, \pm 1, 0)

计算函数值:f=02+2(±1)2+3(0)2=2f = 0^2 + 2(\pm 1)^2 + 3(0)^2 = \mathbf{2}

情况三:由方程 (3) 假设 λ=3\lambda = 3

  • 代入方程 (1):2x(13)=4x=0    x=02x(1 - 3) = -4x = 0 \implies x = 0
  • 代入方程 (2):2y(23)=2y=0    y=02y(2 - 3) = -2y = 0 \implies y = 0
  • 代入约束 (4):0+0+z2=1    z=±10 + 0 + z^2 = 1 \implies z = \pm 1

得到驻点:(0,0,±1)(0, 0, \pm 1)

计算函数值:f=02+2(0)2+3(±1)2=3f = 0^2 + 2(0)^2 + 3(\pm 1)^2 = \mathbf{3}


4. 最终比较

我们得到了三个可能的极值:

  1. 当点在 x 轴 (±1,0,0)(\pm 1, 0, 0) 时,f=1f = 1
  2. 当点在 y 轴 (0,±1,0)(0, \pm 1, 0) 时,f=2f = 2
  3. 当点在 z 轴 (0,0,±1)(0, 0, \pm 1) 时,f=3f = 3

显而易见:

  • 最小值1
  • 最大值3

直观理解:

你在单位球面上寻找 x2+2y2+3z2x^2 + 2y^2 + 3z^2 的最小值。为了让和最小,你应该把“权重”最大的系数(这里是 zz 的系数 3)对应的变量设为 0,把“权重”最小的系数(这里是 xx 的系数 1)对应的变量设为最大(即 ±1\pm 1)。

💡 进阶视角:特征值 (Eigenvalues)

如果你学过线性代数,这个问题其实是在求矩阵的特征值。

目标函数可以写成矩阵形式 f=vTAvf = \mathbf{v}^T A \mathbf{v},其中 v=[x,y,z]T\mathbf{v} = [x, y, z]^T,且:

A=[100020003]A = \begin{bmatrix} 1 & 0 & 0 \\ 0 & 2 & 0 \\ 0 & 0 & 3 \end{bmatrix}

在单位球面上,二次型的极值恰好等于矩阵 AA 的特征值。

  • 最小特征值 = 1 (最小值)
  • 最大特征值 = 3 (最大值)

这样看是不是更快了?


您想了解如果不使用拉格朗日乘子法,如何用“不等式”的方法快速秒杀这道题吗?


🤔Me: 如果我用基本不等式或柯西不等式的话,不是秒了吗?而且结果不一样吧


🥽AI: 你说得非常对!如果你用对了不等式,这道题确实是可以秒杀的,而且结果应该是一样的(最小值是 1)。

如果你的结果和拉格朗日法不一样,很可能是陷入了“基本不等式”最常见的陷阱:取等条件不成立

我们来对比一下两种不等式思路,看看问题出在哪里。

1. ✅ 正确的不等式解法(缩放法)—— 秒杀

这是最快的方法,利用系数的大小关系直接缩放:

f=x2+2y2+3z2f = x^2 + 2y^2 + 3z^2

因为 x2,y2,z2x^2, y^2, z^2 都是非负数,且系数 1<2<31 < 2 < 3,所以我们可以直接缩小系数:

x2+2y2+3z21x2+1y2+1z2x^2 + 2y^2 + 3z^2 \ge 1\cdot x^2 + 1\cdot y^2 + 1\cdot z^2

提取公因式:

=1(x2+y2+z2)= 1 \cdot (x^2 + y^2 + z^2)

代入约束条件 x2+y2+z2=1x^2 + y^2 + z^2 = 1

=1= 1

结论: f1f \ge 1

检查取等条件: 当且仅当 2y22y^2 被缩小为 y2y^2 且损失为0(即 y=0y=0),3z23z^2 被缩小为 z2z^2 且损失为0(即 z=0z=0)时,等号成立。

此时 x2=1x^2=1,即点 (±1,0,0)(\pm 1, 0, 0)。这完全符合!最小值就是 1。


2. ❌ 容易出错的“基本不等式”思路(AM-GM)

很多同学看到平方和求最值,DNA 就动了,想用均值不等式(AM-GM):

a+b+c3abc3a + b + c \ge 3\sqrt[3]{abc} x2+2y2+3z23(x2)(2y2)(3z2)3=36x2y2z23x^2 + 2y^2 + 3z^2 \ge 3\sqrt[3]{(x^2)(2y^2)(3z^2)} = 3\sqrt[3]{6x^2y^2z^2}

这步走不通的两个原因:

  1. 无法定值: 右边包含 x,y,zx,y,z 的乘积,而题目给的是平方和为定值,乘积不是定值,所以算不出具体数字。

  2. 取等条件冲突(最关键): AM-GM 取等号要求“三项相等”,即 x2=2y2=3z2x^2 = 2y^2 = 3z^2

    而在我们前面的正确答案里,最小值发生在 y=0,z=0y=0, z=0

    如果你强行令 x2=2y2=3z2x^2 = 2y^2 = 3z^2 并代入 x2+y2+z2=1x^2+y^2+z^2=1 求解,你会算出一个错误的数值(那是这个函数在特定路径上的极值,而不是全局最小值)。


3. ❌ 柯西不等式 (Cauchy-Schwarz) 的误用

还有一种常见的尝试是用柯西不等式:

(x2+2y2+3z2)(12+(12)2+(13)2)(x+y+z)2(x^2 + 2y^2 + 3z^2)(1^2 + (\frac{1}{\sqrt{2}})^2 + (\frac{1}{\sqrt{3}})^2) \ge (x + y + z)^2

这也没法由 x2+y2+z2=1x^2+y^2+z^2=1 直接算出左边的最小值,因为右边 (x+y+z)2(x+y+z)^2 不是定值。


总结

  • 不等式法确实快,但对于这种“系数不一致的二次型”问题,最有效的是缩放法(利用 1231 \le 2 \le 3 这种单调性)。
  • 结果肯定是一致的。如果算出来不一样,通常是因为你用的不等式强制要求 x,y,zx, y, z 都不为 0 且满足特定比例(比如 x=y=zx=y=z),从而漏掉了“边界点”(比如 y=0,z=0y=0, z=0)的情况。

拉格朗日乘子法虽然慢,像推土机一样,但它的好处是绝对安全,不会漏掉任何一种死角情况。


🤔Me: 那么现在加入xz的交叉项,是不是相当于在线代矩阵里面加入了非对角元


🥽AI: 你的直觉非常敏锐!完全正确。

加入交叉项(如 xzxz),在代数上直接对应于系数矩阵 AA 中出现了非对角元素

这也是为什么线性代数在解决这类多变量极值问题时如此强大的原因——它把复杂的代数运算转化为了矩阵的结构分析。

1. 矩阵形式的变化

让我们把目标函数从 f=ax2+by2+cz2f = ax^2 + by^2 + cz^2 变成加入交叉项的形式。假设新加入一项 kxzk \cdot xz

f=ax2+by2+cz2+kxzf = ax^2 + by^2 + cz^2 + kxz

在矩阵形式 f=xTAxf = \mathbf{x}^T A \mathbf{x} 中(其中 x=[x,y,z]T\mathbf{x} = [x, y, z]^T),矩阵 AA 会发生如下变化:

  • 原来的矩阵(对角阵):

    A=[a000b000c] A = \begin{bmatrix} a & 0 & 0 \\ 0 & b & 0 \\ 0 & 0 & c \end{bmatrix}

    主对角线分别是 x2,y2,z2x^2, y^2, z^2 的系数。

  • 加入 kxzkxz 后的矩阵(实对称矩阵):

    A=[a0k20b0k20c] A = \begin{bmatrix} a & 0 & \mathbf{\frac{k}{2}} \\ 0 & b & 0 \\ \mathbf{\frac{k}{2}} & 0 & c \end{bmatrix}

    注意:为了保证矩阵是对称的(这是二次型的标准处理方式),我们将 xzxz 的系数 kk 平均分配给了 A13A_{13}A31A_{31}

2. 几何意义:旋转

这个“非对角元”的出现,在几何上意味着什么?

  1. 没有交叉项时(对角阵): 椭球面的主轴方向严格对齐于坐标轴 x,y,zx, y, z。这也是为什么之前的解法中,极值点都在坐标轴上(如 (±1,0,0)(\pm 1, 0, 0))。
  2. 有交叉项时(非对角阵): 椭球面发生了旋转
    • 因为加入了 xzxz 项,椭球在 xzx-z 平面上发生了扭转。
    • 现在的“最长轴”和“最短轴”不再指向 xx 轴或 zz 轴,而是指向两者中间的某个方向。

3. 解题难度的变化

这时候,如果你想用之前的两种方法,体验会有天壤之别:

  • 方法一:基本不等式/缩放法(变得很难)

    你不能简单地说 x2x^2 的系数是 aa 了,因为 xxzz 缠绕在一起。你必须先进行配方(本质上是施加一个旋转变换),消去交叉项,才能看清谁大谁小。

  • 方法二:拉格朗日乘子法(变得繁琐)

    方程组会变成:

    {2ax+kz2λx=02by2λy=02cz+kx2λz=0 \begin{cases} 2ax + kz - 2\lambda x = 0 \\ 2by - 2\lambda y = 0 \\ 2cz + kx - 2\lambda z = 0 \end{cases}

    你需要解这个更复杂的线性方程组。

  • 方法三:线性代数特征值法(秒杀)

    这依然是求矩阵 AA 的特征值!

    λIA=0|\lambda I - A| = 0

    求出新的特征值 λ1,λ2,λ3\lambda_1, \lambda_2, \lambda_3,最小的那个依然是最小值。

    结论: 所有的二次型条件极值问题(球面上),本质上都是在求实对称矩阵的特征值。对角化矩阵的过程,就是寻找那个“旋转后的新坐标系”,使得交叉项消失的过程。


想不想试算一个具体的例子?

比如求 f=x2+2y2+3z2+2xzf = x^2 + 2y^2 + 3z^2 + 2xz 在单位球面上的最小值?用特征值法会非常清晰。


🤔Me: 可以


🥽AI: 好的,我们来用特征值法(矩阵法)“秒杀”这个带交叉项的问题。

目标函数: f=x2+2y2+3z2+2xzf = x^2 + 2y^2 + 3z^2 + \mathbf{2xz}

约束条件: x2+y2+z2=1x^2 + y^2 + z^2 = 1


第一步:写出系数矩阵 AA

我们要把 ff 写成 xTAx\mathbf{x}^T A \mathbf{x} 的形式。

  • x2,y2,z2x^2, y^2, z^2 的系数 1,2,31, 2, 3 放在对角线上。
  • xzxz 的系数是 22,我们要把它平均分配a13a_{13}a31a_{31}(即第一行第三列,和第三行第一列)。
    • a13=a31=2/2=1a_{13} = a_{31} = 2 / 2 = 1
  • xyxyyzyz 没有出现,系数为 0。

于是得到实对称矩阵 AA

A=[101020103]A = \begin{bmatrix} 1 & 0 & 1 \\ 0 & 2 & 0 \\ 1 & 0 & 3 \end{bmatrix}


第二步:求特征值

计算特征方程 λIA=0|\lambda I - A| = 0(或者 AλI=0|A - \lambda I| = 0):

det[1λ0102λ0103λ]=0\det \begin{bmatrix} 1-\lambda & 0 & 1 \\ 0 & 2-\lambda & 0 \\ 1 & 0 & 3-\lambda \end{bmatrix} = 0

技巧:按第二行展开

观察第二行只有中间一个非零元素 (2λ)(2-\lambda),直接按这一行展开计算行列式最快:

(2λ)×det[1λ113λ]=0(2-\lambda) \times \det \begin{bmatrix} 1-\lambda & 1 \\ 1 & 3-\lambda \end{bmatrix} = 0

这就把问题分解成了两部分:

  1. 这一部分直接给出一个解:

2λ=0    λ1=22 - \lambda = 0 \implies \lambda_1 = 2

2. 解剩下的二阶行列式:

(1λ)(3λ)1×1=0(1-\lambda)(3-\lambda) - 1\times 1 = 0

(3λ3λ+λ2)1=0(3 - \lambda - 3\lambda + \lambda^2) - 1 = 0

λ24λ+2=0\lambda^2 - 4\lambda + 2 = 0

使用求根公式 b±b24ac2\frac{-b \pm \sqrt{b^2 - 4ac}}{2}

λ=4±1682=4±82=4±222\lambda = \frac{4 \pm \sqrt{16 - 8}}{2} = \frac{4 \pm \sqrt{8}}{2} = \frac{4 \pm 2\sqrt{2}}{2}

λ=2±2\lambda = 2 \pm \sqrt{2}


第三步:结论与比较

我们算出了三个特征值,它们分别对应函数在该方向上的极值:

  1. λ1=2\lambda_1 = 2
  2. λ2=2+23.414\lambda_2 = 2 + \sqrt{2} \approx 3.414
  3. λ3=220.586\lambda_3 = 2 - \sqrt{2} \approx 0.586

最终答案:

  • 最小值 (fminf_{min}) 是最小的特征值:222 - \sqrt{2}
  • 最大值 (fmaxf_{max}) 是最大的特征值:2+22 + \sqrt{2}

这里的几何意义是什么?

我们可以把特征值的结果翻译回几何语言:

  1. λ=2\lambda = 2 对应的特征向量是 yy 轴方向。

    你看矩阵中间那个 22 以及对应的 yy 行列全是 0,说明 yy 轴和 x,zx, z 轴是解耦的。yy 轴方向依然保持原样,没有旋转。

  2. 另外两个特征值对应的是 xzx-z 平面的旋转。

    原来的系数是 x2x^2 (系数1) 和 z2z^2 (系数3)。

    因为加入了 2xz2xz,椭圆在 xzx-z 平面上旋转了。

    • 原来的长度刻度是 1 和 3。
    • 旋转混合后,新的主轴长度刻度变成了 222-\sqrt{2} (约0.6) 和 2+22+\sqrt{2} (约3.4)。
    • 最小值比原来的 1 更小了,最大值比原来的 3 更大了。这就是交叉项的作用——它拉伸了形状的极值范围。

感受一下: 如果用拉格朗日乘子法解这个方程组:

{2x+2z=2λx4y=2λy6z+2x=2λz\begin{cases} 2x + 2z = 2\lambda x \\ 4y = 2\lambda y \\ 6z + 2x = 2\lambda z \end{cases}

虽然也能解,但远不如求特征值来得直观和系统,对吧?


🤔Me: 是只有二次型可以化为矩阵吗


🥽AI: 这是一个非常深刻的问题!答案是:绝不仅仅是二次型。

虽然二次型(Quadratic Form)和矩阵(也就是实对称矩阵)的对应关系最为“完美”和经典,但矩阵本质上是线性代数的语言,凡是涉及到线性双线性结构的问题,几乎都可以化为矩阵。

以下是除了二次型之外,另外几种常见的“化为矩阵”的情况,以及它们之间的区别:

1. 线性方程组 (Linear Systems) —— 最基础的对应

这是你最早接触的矩阵形式。

  • 形式: 一次函数(线性)。

  • 代数式: {2x+3y=54xy=2\begin{cases} 2x + 3y = 5 \\ 4x - y = 2 \end{cases}

  • 矩阵形式: Ax=bA\mathbf{x} = \mathbf{b}

    [2341][xy]=[52]\begin{bmatrix} 2 & 3 \\ 4 & -1 \end{bmatrix} \begin{bmatrix} x \\ y \end{bmatrix} = \begin{bmatrix} 5 \\ 2 \end{bmatrix}

  • 区别: 这里矩阵代表的是一个变换系数表,它不是像二次型那样算出一个标量(数字),而是算出另一个向量。

2. 双线性型 (Bilinear Forms) —— 二次型的“爸爸”

二次型其实是双线性型的一个特例

  • 形式: 两个不同向量 x\mathbf{x}y\mathbf{y} 的混合乘积。
  • 代数式: f(x,y)=x1y1+2x1y2+3x2y1+f(\mathbf{x}, \mathbf{y}) = x_1 y_1 + 2x_1 y_2 + 3x_2 y_1 + \dots
  • 矩阵形式: xTAy\mathbf{x}^T A \mathbf{y}
  • 关系:
    • 如果 y=x\mathbf{y} = \mathbf{x}(即两个向量是同一个),这就变成了二次型
    • 区别: 双线性型的矩阵 AA 不需要是对称的
    • 例如:向量内积 xy=xTIy\mathbf{x} \cdot \mathbf{y} = \mathbf{x}^T I \mathbf{y} 就是最简单的双线性型。

3. 任意函数的“二阶近似” —— 海森矩阵 (Hessian Matrix)

这点对你理解优化问题最重要。

即使函数 f(x,y,z)f(x,y,z) 不是二次型(比如包含 x3,sin(x),exx^3, \sin(x), e^x 等),我们在研究极值点附近时,也可以把它强行看作一个矩阵。

这是泰勒展开(Taylor Expansion)的功劳:

f(x)f(x0)+fT(xx0)+12(xx0)TH(xx0)f(\mathbf{x}) \approx f(\mathbf{x}_0) + \nabla f^T (\mathbf{x}-\mathbf{x}_0) + \frac{1}{2} (\mathbf{x}-\mathbf{x}_0)^T \mathbf{H} (\mathbf{x}-\mathbf{x}_0)
  • 这里的 H\mathbf{H}海森矩阵 (Hessian Matrix),它由二阶偏导数组成:

    H=[2fx22fxy2fyx2fy2]H = \begin{bmatrix} \frac{\partial^2 f}{\partial x^2} & \frac{\partial^2 f}{\partial x \partial y} \\ \frac{\partial^2 f}{\partial y \partial x} & \frac{\partial^2 f}{\partial y^2} \end{bmatrix}
  • 意义: 在极值点附近,任何光滑函数都长得像一个二次型

    • 如果是二次型 f=xTAxf = \mathbf{x}^T A \mathbf{x},那么它的海森矩阵就是 2A2A
    • 这也是为什么我们研究 AA 的特征值正负(正定、负定)就能判断极大值还是极小值。

4. 什么时候不能用矩阵?(或是矩阵不够用了)

矩阵是一个二维的表格(行 × 列)。

  • 三次型、四次型...

    如果你有 f=ax3+by3+cz3+dxyzf = ax^3 + by^3 + cz^3 + dxyz,这就没法用一个二维矩阵完美表示了。

    这时候你需要张量 (Tensor)。

    • 二次型 \to 2阶张量(矩阵,像个正方形面)
    • 三次型 \to 3阶张量(像个立方体块)

总结对照表

代数对象表达式示例矩阵/张量角色几何/物理意义
线性方程ax+byax+by向量或矩阵行平面、直线
二次型ax2+bxy+cy2ax^2+bxy+cy^2实对称矩阵能量、距离、曲率
双线性型x1y1+x2y2x_1 y_1 + x_2 y_2方阵 (不一定对称)两个向量的相互作用
任意函数sin(x2+y)\sin(x^2+y)海森矩阵 (局部)局部的凹凸性
三次型aijkxixjxka_{ijk} x_i x_j x_k三阶张量更复杂的高阶物理量

所以,矩阵是**“二阶”**关系的终极表达工具。而在优化问题里,因为我们最关心二阶导数(凹凸性),所以矩阵才显得统治力这么强。


既然提到了海森矩阵,你想知道怎么用海森矩阵来判断一个非二次型函数(比如 f=x3+y33xyf = x^3 + y^3 - 3xy)的极值吗?这就在拉格朗日法之外,涵盖了无约束极值的通用解法。


🤔Me: 可以


🥽AI: 好的,我们来实战一下!

这道题 f(x,y)=x3+y33xyf(x, y) = x^3 + y^3 - 3xy 是高等数学里最经典的例子,用来演示如何用海森矩阵 (Hessian Matrix) 处理非线性、无约束的极值问题。

整个过程分为三步:找点 \to 造矩阵 \to 判正负


第一步:找驻点 (Critical Points)

我们要找到梯度为 0 的点,也就是“平”的地方。这就好比在一座凹凸不平的山上找哪里能站稳。

求一阶偏导数并令其为 0:

  1. fx=3x23y=0    y=x2f_x = 3x^2 - 3y = 0 \implies y = x^2
  2. fy=3y23x=0    x=y2f_y = 3y^2 - 3x = 0 \implies x = y^2

解这个方程组:

把 (1) 代入 (2):

x=(x2)2=x4x = (x^2)^2 = x^4

x4x=0x^4 - x = 0

x(x31)=0x(x^3 - 1) = 0

解得 x=0x = 0x=1x = 1

  • x=0x=0 时,y=0y=0。得到点 P1(0,0)P_1(0, 0)
  • x=1x=1 时,y=1y=1。得到点 P2(1,1)P_2(1, 1)

这两个点是“嫌疑人”,我们需要审判它们到底是极小值、极大值,还是什么都不是。


第二步:造海森矩阵 (Hessian Matrix)

现在我们需要看二阶导数(曲率/凹凸性)。

求二阶偏导数:

  • fxx=(3x23y)x=6xf_{xx} = (3x^2 - 3y)'_x = 6x
  • fyy=(3y23x)y=6yf_{yy} = (3y^2 - 3x)'_y = 6y
  • fxy=(3x23y)y=3f_{xy} = (3x^2 - 3y)'_y = -3 (注意 fyxf_{yx} 也是 -3,矩阵对称)

构建通用的海森矩阵 H(x,y)H(x, y)

H=[fxxfxyfyxfyy]=[6x336y]H = \begin{bmatrix} f_{xx} & f_{xy} \\ f_{yx} & f_{yy} \end{bmatrix} = \begin{bmatrix} 6x & -3 \\ -3 & 6y \end{bmatrix}


第三步:判别 (审判嫌疑人)

我们要把两个驻点代入矩阵,通过矩阵的性质(正定/负定/不定)来判断地形。

判断依据(记 A=fxx,B=fxy,C=fyyA=f_{xx}, B=f_{xy}, C=f_{yy}):

  • 行列式 det(H)>0\det(H) > 0A>0A > 0:正定矩阵 \to 极小值 (像碗底)。
  • 行列式 det(H)>0\det(H) > 0A<0A < 0:负定矩阵 \to 极大值 (像山顶)。
  • 行列式 det(H)<0\det(H) < 0:不定矩阵 \to 鞍点 (Saddle Point,非极值)。
  • 行列式 det(H)=0\det(H) = 0:方法失效(需要更高阶导数)。

1. 审判点 P1(0,0)P_1(0, 0)

代入 x=0,y=0x=0, y=0

H=[0330]H = \begin{bmatrix} 0 & -3 \\ -3 & 0 \end{bmatrix}

计算行列式(特征值的乘积):

det(H)=0×0(3)×(3)=9\det(H) = 0\times0 - (-3)\times(-3) = -9

结论:

因为 det(H)<0\det(H) < 0,这是一个鞍点。

  • 几何意义: 在这个点,你在某个方向看是谷底,换个方向看是山峰(像马鞍一样)。它不是极值点。

2. 审判点 P2(1,1)P_2(1, 1)

代入 x=1,y=1x=1, y=1

H=[6336]H = \begin{bmatrix} 6 & -3 \\ -3 & 6 \end{bmatrix}

计算行列式:

det(H)=6×6(3)×(3)=369=27>0\det(H) = 6\times6 - (-3)\times(-3) = 36 - 9 = 27 > 0

再看主对角线元素(fxxf_{xx}):

A=6>0A = 6 > 0

结论:

因为 det>0\det > 0A>0A > 0(正定矩阵),这是一个局部极小值。

函数值 f(1,1)=1+13=1f(1, 1) = 1 + 1 - 3 = -1


总结与直觉

你看,海森矩阵在这个过程中扮演了**“二阶放大镜”**的角色:

  1. 对于 (0,0)(0,0) 矩阵告诉我们要小心,虽然它是平的(一阶导为0),但它是一个既凹又凸的马鞍面。
  2. 对于 (1,1)(1,1) 矩阵告诉我们这是一个标准的“碗底”。

这完全对应了前面说的:在局部,函数都可以看作一个二次型

  • (0,0)(0,0) 附近,函数大约长得像 3xy-3xy(双曲抛物面)。
  • (1,1)(1,1) 附近,函数大约长得像 6(x1)26(x1)(y1)+6(y1)26(x-1)^2 - 6(x-1)(y-1) + 6(y-1)^2(椭圆抛物面)。

现在你掌握了:

  1. 拉格朗日乘子法: 处理有约束的极值(球面上找最低点)。
  2. 海森矩阵法: 处理无约束的极值(整个空间找坑和峰)。

这两把剑在手,基本上常见的多元函数极值问题都难不倒你了。


既然你对矩阵这么敏感,想不想知道如果不直接算行列式,如何一眼看穿矩阵的“正定性”?(也就是 Sylvester 准则或者特征值的几何直觉)


🤔Me: 可以说说看


🥽AI: 太好了!所谓“一眼看穿”,其实就是跳过繁琐的特征值计算,利用Sylvester准则(顺序主子式)*或者*几何直觉来快速判断。

判断矩阵 AA 是“正定”(像碗底)、“负定”(像山顶)还是“不定”(像马鞍),其实就是在看这个矩阵“硬不硬”。

我们以最常见的 2×22 \times 2 实对称矩阵为例:

A=[abbc]A = \begin{bmatrix} a & b \\ b & c \end{bmatrix}


方法一:Sylvester 准则(不用算特征值,只算小方块)

这是最快的“机械化”判定法。你只需要像切蛋糕一样,从左上角开始,切出 1×11\times12×22\times2……的方块(这叫顺序主子式),看它们的行列式符号。

1. 正定矩阵 (Positive Definite) \to 极小值

  • 口诀: “步步为正”。
  • 条件: 所有的顺序主子式都大于 0。
    • 第一阶:a>0a > 0 (左上角必须是正的)
    • 第二阶:det(A)=acb2>0\det(A) = ac - b^2 > 0 (整体行列式是正的)

2. 负定矩阵 (Negative Definite) \to 极大值

  • 口诀: “一负一正,奇负偶正”。
  • 条件:
    • 第一阶:a<0a < 0 (左上角必须是负的)
    • 第二阶:det(A)=acb2>0\det(A) = ac - b^2 > 0 (整体行列式居然还是要正的!这点最容易错)

3. 不定矩阵 (Indefinite) \to 鞍点

  • 条件: 只要 det(A)<0\det(A) < 0,不用看 aa,直接判死刑:不定
    • 这对应了之前例子里的 P1(0,0)P_1(0,0),算出来是 -9,直接定为鞍点。

方法二:几何/数值直觉(真正的“一眼看穿”)

如果你不想背口诀,可以用这个直觉,非常准:

  1. 盯着“主对角线”看

主对角线上的元素 (aacc) 代表了在坐标轴方向上的凹凸性。

  • 如果 aacc 都是很大的正数:这就好比两根主梁都很结实向上,中间那个交叉项 bb (干扰项) 只要不是大得离谱,这房子就塌不了 \to 大概率正定
  • 如果 aacc 异号(比如一个 3,一个 -5):不用算别的了,绝对是不定矩阵。因为你在 x 方向向上弯,y 方向向下弯,肯定是马鞍面。
  • “拔河”理论

看行列式 det=acb2\det = ac - b^2

  • acac 是“正统力量”(主对角线乘积)。
  • b2b^2 是“破坏力量”(交叉项的平方,代表扭曲程度)。
  • 正定/负定的前提是: ac>b2ac > b^2。也就是说,主对角线的力量必须压过交叉项
    • 如果 acac 赢了 (>b2> b^2),且 a>0a>0,那就是正定(稳稳的碗)。
    • 如果 acac 输了 (<b2< b^2),也就是交叉扭曲得太厉害,直接把碗扭成了马鞍 \to 不定。

实战演练

来,试着几秒钟内判断下面几个海森矩阵的性质:

案例 A:

H=[10225]H = \begin{bmatrix} 10 & 2 \\ 2 & 5 \end{bmatrix}

  1. 一眼看: 对角线 10 和 5 都是正的(有希望正定)。
  2. 拔河: 10×5=5010 \times 5 = 50,交叉项 22=42^2 = 4。50 完爆 4。
  3. 结论: 正定(极小值)。

案例 B:

H=[3442]H = \begin{bmatrix} -3 & 4 \\ 4 & -2 \end{bmatrix}

  1. 一眼看: 对角线 -3 和 -2 都是负的(有希望负定)。

  2. 拔河: (3)×(2)=6(-3) \times (-2) = 6,交叉项 42=164^2 = 16

  3. 坏了: 正统力量 6 输给了破坏力量 16。

  4. 结论: det<0\det < 0,不定矩阵(鞍点)。

    (注意:虽然对角线都是负的,但因为交叉项太大,把曲面扭反了)

案例 C:

H=[21001003]H = \begin{bmatrix} 2 & 100 \\ 100 & 3 \end{bmatrix}

  1. 一眼看: 就算 a,ca, c 是正的,那个 100100 太刺眼了。
  2. 结论: 肯定不定。交叉项太大。

案例 D (我们之前的题):

H=[0330]H = \begin{bmatrix} 0 & -3 \\ -3 & 0 \end{bmatrix}

  1. 一眼看: 主对角线是 0。
  2. 秒杀: 主对角线乘积为 0,肯定输给 b2b^2(除非 bb 也是0)。只要 b0b \ne 0,就是不定(鞍点)。

总结

以后看到 2×22 \times 2 矩阵:

  1. 先看主对角线:如果一正一负 \to 直接鞍点
  2. 如果主对角线同号,再看能不能压住交叉项 (acac vs b2b^2)。
    • 压得住 \to 随主对角线符号(正定或负定)。
    • 压不住 \to 鞍点。

是不是比算特征值快多了?


🤔Me: 那如果是3x3矩阵呢


🥽AI: 3×33 \times 3 矩阵的判断逻辑和 2×22 \times 2 是一脉相承的,但是计算量上了一个台阶。

依然推荐使用 Sylvester 准则(顺序主子式法),这是手算最稳妥的方法。

我们可以把它想象成**“三层闯关游戏”。你需要依次计算三个行列式的值,必须每一关都符合特定的符号模式**,才能判定它是正定还是负定。

假设矩阵 A=[a11a12a13a21a22a23a31a32a33]A = \begin{bmatrix} a_{11} & a_{12} & a_{13} \\ a_{21} & a_{22} & a_{23} \\ a_{31} & a_{32} & a_{33} \end{bmatrix}


第一步:切出三个“顺序主子式”

你需要像切蛋糕一样,从左上角开始,切出三块大小不同的方块:

  1. 第一关 (D1D_1): 左上角那个单独的元素。

    D1=a11D_1 = a_{11}

  2. 第二关 (D2D_2): 左上角的 2×22 \times 2 矩阵行列式。

    D2=det[a11a12a21a22]D_2 = \det \begin{bmatrix} a_{11} & a_{12} \\ a_{21} & a_{22} \end{bmatrix}

  3. 第三关 (D3D_3): 整个 3×33 \times 3 矩阵的行列式。

    D3=det(A)D_3 = \det(A)


第二步:看符号模式(背口诀)

算出 D1,D2,D3D_1, D_2, D_3 后,看它们的正负号组合:

1. 正定矩阵 (Positive Definite) \to 极小值 (碗底)

  • 口诀: “步步为正”
  • 要求: D1>0D_1 > 0D2>0D_2 > 0D3>0D_3 > 0
  • 直觉: 说明不管是 1 维、2 维还是 3 维层面,它的“能量”都是正的。

2. 负定矩阵 (Negative Definite) \to 极大值 (山顶)

  • 口诀: “奇负偶正” (这是最容易错的地方!)
  • 要求:
    • D1<0D_1 < 0 (第一关必须负)
    • D2>0D_2 > 0 (第二关必须正!因为负负得正)
    • D3<0D_3 < 0 (第三关必须负)
  • 符号序列: ,+,-, +, -

3. 不定矩阵 (Indefinite) \to 鞍点 (Saddle Point)

  • 判断: 只要不符合上面两种完美模式,就是不定矩阵。
    • 比如:+,+,+, +, - (前两关过了,最后一关翻车了)。
    • 比如:+,,++, -, + (中间乱了)。
    • 比如:D2<0D_2 < 0 (第二关就挂了)。

第三步:实战演练(教你如何偷懒)

虽然公式看起来吓人,但在实战中,我们通常不需要算完这三步,往往一眼就能看出来是“不定”

偷懒技巧 1:看主对角线

如果主对角线上的三个元素 (a11,a22,a33a_{11}, a_{22}, a_{33}) 符号不一致(比如有正有负),不用算了,直接判死刑:不定矩阵(鞍点)

  • 原理: 正定要求主对角线全正,负定要求主对角线全负。混合就是马鞍。

偷懒技巧 2:看 D2D_2

如果在算第二关 D2D_2 时算出负数,直接停止。

  • 如果是正定,要求 D2>0D_2 > 0
  • 如果是负定,也要求 D2>0D_2 > 0(负负得正)。
  • 所以只要 D2<0D_2 < 0,它就不可能是极值点,直接是不定矩阵

举个栗子

例 1:

A=[210121012]A = \begin{bmatrix} 2 & -1 & 0 \\ -1 & 2 & -1 \\ 0 & -1 & 2 \end{bmatrix}

  1. 闯第一关: D1=2D_1 = 2 () \to 可能是正定。

  2. 闯第二关: D2=2×2(1)×(1)=41=3D_2 = 2\times 2 - (-1)\times (-1) = 4 - 1 = 3 () \to 依然可能是正定。

  3. 闯第三关: 算 3×33 \times 3 行列式。

    利用刚才算的 D2D_2,按第一行展开:

    D3=2×D2+(1)×()=2(3)(1)(2)=62=4D_3 = 2 \times D_2 + (-1) \times (\dots) = 2(3) - (-1)(-2) = 6 - 2 = 4 (正)。

  4. 结论: +,+,++, +, +正定矩阵(极小值)。

例 2:

B=[123251314]B = \begin{bmatrix} -1 & 2 & 3 \\ 2 & 5 & 1 \\ 3 & 1 & 4 \end{bmatrix}

  1. 一眼扫视: 主对角线是 1,5,4-1, 5, 4
  2. 发现问题: 有正有负!
  3. 秒杀结论: 不定矩阵(鞍点)。不需要算任何行列式。

例 3:

C=[210120003]C = \begin{bmatrix} -2 & 1 & 0 \\ 1 & -2 & 0 \\ 0 & 0 & -3 \end{bmatrix}

  1. 一眼扫视: 主对角线全是负的(有希望是负定)。
  2. 闯第一关: D1=2D_1 = -2 ()。符合“奇负”。
  3. 闯第二关: D2=(2)(2)1×1=41=3D_2 = (-2)(-2) - 1\times 1 = 4 - 1 = 3 ()。符合“偶正”。
  4. 闯第三关: 这是一个分块对角矩阵,行列式 = D2×(3)=3×(3)=9D_2 \times (-3) = 3 \times (-3) = -9 ()。符合“奇负”。
  5. 结论: ,+,-, +, -负定矩阵(极大值)。

总结

对于 3×33 \times 3

  1. 先看对角线:如果有正有负,直接秒杀(不定)。
  2. 再算 D1,D2D_1, D_2:如果 D2<0D_2 < 0,直接秒杀(不定)。
  3. 最后算 D3D_3:只有前两关都过了,才算最后的大行列式。

这套流程能帮你省下大量的无效计算时间。


🤔Me: 好的,那么解3次型的约束问题,请你用二阶张量做一个讲解


🥽AI: 这是一个非常硬核且有趣的角度!

要用二阶张量(矩阵)*去解释*三次型(Cubic Form)*的问题,我们必须先纠正一个概念:三次型本质上是*三阶张量(3rd-order Tensor)

但是!你的直觉没有错,在解题过程中,我们确实可以通过**“降维打击”**(张量缩并),把三阶张量转化为我们熟悉的二阶张量(矩阵)来理解。

这就好比切面包:三阶张量是一个立方体面包,我们切一刀,断面就是一个二阶张量(矩阵)。

以下是用张量语言对三次型约束极值问题的完整拆解:


1. 什么是三次型的“立方体” (The Tensor TT)

对于二次型,我们有 f=Aijxixjf = \sum A_{ij} x_i x_jAA 是矩阵/二阶张量)。

对于三次型,函数形式变成了三个向量的乘积:

f(x)=i=1nj=1nk=1nTijkxixjxkf(\mathbf{x}) = \sum_{i=1}^n \sum_{j=1}^n \sum_{k=1}^n T_{ijk} x_i x_j x_k

这里 T={Tijk}\mathcal{T} = \{T_{ijk}\} 是一个三阶张量(可以想象成由数字组成的立方体块,n×n×nn \times n \times n)。

为了方便计算,我们通常假设 TijkT_{ijk} 是全对称的(就像对称矩阵一样,i,j,ki,j,k 顺序怎么换,值都不变)。

2. 拉格朗日乘子法的张量形式

我们的目标:

  • Maximize: f=Tijkxixjxkf = T_{ijk} x_i x_j x_k (使用了爱因斯坦求和约定,省略 \sum)
  • Subject to: g=xixi1=0g = x_i x_i - 1 = 0 (单位球面)

构造拉格朗日函数:

L=Tijkxixjxkλ(xixi1)L = T_{ijk} x_i x_j x_k - \lambda (x_i x_i - 1)

对向量 x\mathbf{x} (分量 xmx_m) 求导:

Lxm=3Tmjkxjxk2λxm=0\frac{\partial L}{\partial x_m} = 3 T_{mjk} x_j x_k - 2 \lambda x_m = 0

整理得到核心方程(张量特征值方程):

3Tmjkxjxk=2λxm\mathbf{3 T_{mjk} x_j x_k = 2 \lambda x_m}


3. 关键步骤:如何用“二阶张量”理解它?

请盯着这一项: TmjkxkT_{mjk} x_k

在三阶张量 TT 中,如果我们把第三个维度 kk 用向量 x\mathbf{x} “吃掉”(Contract/缩并),剩下的部分 m,jm, j 就只有两个维度了!

我们可以定义一个依赖于 x\mathbf{x} 的矩阵(二阶张量) A(x)A(\mathbf{x})

A(x)mj=kTmjkxkA(\mathbf{x})_{mj} = \sum_{k} T_{mjk} x_k

几何意义:

三阶张量是一个立方体。如果我们沿着某个方向(x\mathbf{x} 的方向)做一次“投影”或“切片”加权求和,我们就得到了一个矩阵。

于是,原本复杂的三次型极值方程,现在变成了我们熟悉的样子:

3A(x)动态矩阵x=2λx\mathbf{3 \underbrace{A(\mathbf{x})}_{\text{动态矩阵}} \mathbf{x} = 2 \lambda \mathbf{x}}

这看起来是不是极其像矩阵特征值问题 (Ax=λxA\mathbf{x} = \lambda \mathbf{x})?

但是,这里有一个巨大的陷阱:

  • 普通特征值问题: 矩阵 AA固定的数字阵列。
  • 三次型极值问题: 矩阵 A(x)A(\mathbf{x})活着的!它随着 x\mathbf{x} 的变化而变化。

4. 为什么这比二次型难得多?

让我们对比一下“二阶张量视角”下的差异:

特性二次型 (Quadratic)三次型 (Cubic)
公式xTAx\mathbf{x}^T A \mathbf{x}xTA(x)x\mathbf{x}^T A(\mathbf{x}) \mathbf{x}
方程Ax=λxA \mathbf{x} = \lambda \mathbf{x}3A(x)x=2λx3 A(\mathbf{x}) \mathbf{x} = 2\lambda \mathbf{x}
矩阵性质常数矩阵 (Constant)变量矩阵 (Dependent on x\mathbf{x})
求解难度线性方程组 (P问题)二次方程组 (NP-hard)
极值点对应矩阵的特征值对应张量的 Z-Eigenvalues

举个具体的例子:

假设 f(x,y,z)=x3+y3+z3+6xyzf(x, y, z) = x^3 + y^3 + z^3 + 6xyz

对应的三阶张量 TT 中:

  • 对角元 T111=1,T222=1,T333=1T_{111}=1, T_{222}=1, T_{333}=1
  • 交叉元 T123=1T_{123} = 1 (因为 6xyz6xyz 分给 6 个排列 123,132,213...123, 132, 213... 各得1)。

当我们求导时,我们得到的“动态矩阵” A(x)A(\mathbf{x}) 可能是这样的:

A(x)=[xzyzyxyxz]A(\mathbf{x}) = \begin{bmatrix} x & z & y \\ z & y & x \\ y & x & z \end{bmatrix}

(注意:矩阵里的元素包含了变量!)

我们需要解方程:

3[xzyzyxyxz][xyz]=2λ[xyz]3 \begin{bmatrix} x & z & y \\ z & y & x \\ y & x & z \end{bmatrix} \begin{bmatrix} x \\ y \\ z \end{bmatrix} = 2\lambda \begin{bmatrix} x \\ y \\ z \end{bmatrix}

这不再是一个简单的线性代数问题,而是一个代数几何问题。我们通常需要用数值方法(如张量幂迭代法 Tensor Power Method)来求解。

5. 总结

用二阶张量(矩阵)讲解三次型,结论是这样的:

  1. 降维: 三次型 TT 可以看作是一堆二阶张量(矩阵)的线性组合
  2. 动态特征值: 求解三次型的极值,本质上是在寻找一个方向 x\mathbf{x},使得当我们把三阶张量沿着这个方向“压扁”成一个矩阵 A(x)A(\mathbf{x}) 后,这个方向 x\mathbf{x} 恰好又是这个新矩阵的特征向量!
  3. 自指涉: 你在找 x\mathbf{x},但矩阵本身又由 x\mathbf{x} 决定。这就像是你在照镜子,但镜子的形状取决于你长什么样。

这就是为什么高阶张量问题比矩阵问题难这么多的核心原因:非线性耦合